package com.yunxitest.yunxitest.utils;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.nio.channels.FileChannel;

/**
 * 文件工具.
 */
 final class FileUtils {

    /**
     * 工具类私有构造器.
     */
    private FileUtils() {

    }

    /**
     * 文件复制.
     *
     * @param source 来源
     * @param dest   目的地
     */
     static void fileCopy(final String source, final String dest) {
        FileInputStream fi = null;

        FileOutputStream fo = null;

        FileChannel in = null;

        FileChannel out = null;

        try {
            File file = new File(dest);
            if (file.exists()) {
                file.delete();
            }
            file.createNewFile();
            fi = new FileInputStream(source);

            fo = new FileOutputStream(dest);

            in = fi.getChannel(); //得到对应的文件通道

            out = fo.getChannel(); //得到对应的文件通道

            in.transferTo(0, in.size(), out); //连接两个通道，并且从in通道读取，然后写入out通道

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            try {
                fi.close();
                in.close();
                fo.close();
                out.close();
            } catch (IOException e) {
                e.printStackTrace();
            }

        }

    }
}
